package com.android.telephonecall.receiver;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.TelephonyManager;
import android.widget.Toast;

/**
 * 接听来电广播
 */
public class IncomingCallReceiver  extends BroadcastReceiver {

    private static final String TAG = "IncomingCallReceiver";

    private TelephonyManager telephonyManager;

    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();

        if (action.equals(TelephonyManager.ACTION_PHONE_STATE_CHANGED)) {
            String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);

            if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
                // 有电话呼入，可以执行相应操作
                Toast.makeText(context, "有来电", Toast.LENGTH_SHORT).show();

                // 这里可以添加你想要执行的代码，比如自动接听电话
                // 注意：从Android 8.0开始，接听电话需要额外权限（READ_PHONE_STATE和ANSWER_PHONE_CALLS），并且只能在系统应用中才能使用。

                // 可以使用以下代码自动接听来电（需要权限）
                telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
                try {
                    // 使用反射获取TelephonyManager类中的getITelephony方法
                    Class<?> telephonyClass = Class.forName(telephonyManager.getClass().getName());
                    java.lang.reflect.Method getITelephonyMethod = telephonyClass.getDeclaredMethod("getITelephony");

                    // 设置访问权限
                    getITelephonyMethod.setAccessible(true);

                    // 获取ITelephony实例
                    Object iTelephony = getITelephonyMethod.invoke(telephonyManager);

                    // 调用ITelephony接口的answerRingingCall方法，自动接听来电
                    java.lang.reflect.Method answerRingingCallMethod = iTelephony.getClass().getDeclaredMethod("answerRingingCall");
                    answerRingingCallMethod.invoke(iTelephony);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
